lintcode 倒水
描述
给定一个评估图, heights[i] 表示该地的高度。所有下标对应的地面宽度均为 1。请问V个单位的水落在下标为 K 的地面之后,每个下标对应的地面水量是多少?
水首先从下标K降落,接着它依据下述规则流动:
首先,液滴不能流向更高的地方;
如果液滴能向左最终能下降,那么向左移动;
否则,如果能向右最终能下降,则向右移动;
否则,留当前位置。
其中,“最终能下降”意味着如果液滴像那个方向移动,最终能够处于更低高度。
假设整个区域左右两侧有无限高的地形。此外,一单位水不能拆分,即每个单位必须恰好落在一个区块内。
样例
输入: heights = [1,2,3,4], V = 2, K = 2
输出: [2,3,3,4]
解释: 最后一滴水落到位置1,因为继续往左走不会下降。
输入: heights = [3,1,3], V = 5, K = 1
输出: [4,4,4]
思路
实现两个函数,往左检索找水滴的位置和往右检索找水滴的位置,如果水滴没有可以放的地方就返回-1
如果两次都返回-1那么就在原地
代码
1 | class Solution { |
-------------end of filethanks for reading-------------